package vista;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;

import controlador.ControladorJuego;

public class NuevoJugador extends JDialog implements ActionListener {
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField campoNombre;
	private ControladorJuego control;
	private boolean aceptado = false;
	
	
	public NuevoJugador(ControladorJuego control, JFrame parent, boolean modal) {
		super(parent, modal);
		
		this.control = control;
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 300, 150);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		JLabel titulo = new JLabel("Nuevo Jugador");
		titulo.setFont(new Font("Tahoma", Font.BOLD, 15));
		titulo.setHorizontalAlignment(SwingConstants.CENTER);		
		titulo.setAlignmentX(CENTER_ALIGNMENT);
		contentPane.add(titulo, BorderLayout.NORTH);
		
		JPanel nombrePanel = new JPanel();
		
		JLabel ingreseNombre = new JLabel("Ingrese nombre: ");
		
		campoNombre = new JTextField();
		campoNombre.setColumns(10);
		
		nombrePanel.add(ingreseNombre);
		nombrePanel.add(campoNombre);
		
		contentPane.add(nombrePanel, BorderLayout.CENTER);
		
		JPanel confirmarPanel = new JPanel();
		JButton aceptar = botonConAccionEnter("Aceptar");
		aceptar.setActionCommand("ACEPTAR");
		aceptar.addActionListener(this);		
		
		JButton cancelar = new JButton("Cancelar");
		cancelar.setActionCommand("CANCELAR");
		cancelar.addActionListener(this);		
		
		confirmarPanel.add(aceptar);
		confirmarPanel.add(cancelar);
		contentPane.add(confirmarPanel, BorderLayout.SOUTH);
		this.getRootPane().setDefaultButton(aceptar);
		
	}
	
	
	public void actionPerformed(ActionEvent evt) {
	    String comando = evt.getActionCommand();
	    if (comando == "ACEPTAR") {
	    	control.setNombreJugador(campoNombre.getText());
			aceptado = true;
			dispose();
	    }
	    
	    if (comando == "CANCELAR") {	    	
			dispose();
	    }
 }
	
	private JButton botonConAccionEnter(String etiqueta) {
		 JButton boton = new JButton(etiqueta);
			
			boton.registerKeyboardAction(boton.getActionForKeyStroke(
	                KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0, false)),
	                KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false),
	                JComponent.WHEN_FOCUSED);
			
			boton.registerKeyboardAction(boton.getActionForKeyStroke(
	                KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0, true)),
	                KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true),
	                JComponent.WHEN_FOCUSED);
			 return boton;
	 }	 
	
	public boolean estaAceptado() {
		return this.aceptado;
	}

}
